home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Today (BR) Volume 2 #2 / CD-ROM TODAY - VOLUME 2 NUMERO2.iso / mcf / setup.ms_ / setup.ms
Encoding:
Text File  |  1996-01-10  |  9.2 KB  |  330 lines

  1. '**************************************************************************
  2. '*                  MS Test script for Win32s setup program
  3. '**************************************************************************
  4.  
  5. ' $DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME                  = 100
  12. CONST ASKQUIT                  = 200
  13. CONST DESTPATH                 = 300
  14. CONST EXITFAILURE              = 400
  15. CONST EXITQUIT                 = 600
  16. CONST EXITSUCCESS              = 700
  17. CONST TOOBIG            = 6300
  18. CONST BADPATH                  = 6400
  19. CONST RESTART                  = 1001
  20.  
  21. CONST HELPWELCOME              = 1000
  22. CONST VERPATH                  = 1100
  23. CONST EXITFAILNOTWIN31         = 1200
  24. CONST EXITFAILNOTENH           = 1300
  25. CONST EXITFAILNOTPAGING        = 1325
  26. CONST EXITFAILNOTINTEL         = 1350
  27. CONST EXITFAILRUNAPP           = 1360
  28. CONST FREECELLINST             = 1400
  29. CONST FREECELLINSTNOWIN32S     = 1450
  30. CONST FREECELLPATH             = 1500
  31. CONST HELPFREECELL             = 1600
  32.  
  33.  
  34. ''Bitmap ID
  35. CONST LOGO = 1
  36.  
  37. GLOBAL DESTLP$     ''LivePix directory
  38. GLOBAL DESTWING$
  39. GLOBAL EXTRACOSTS$
  40. GLOBAL APPCOSTS$
  41.  
  42. GLOBAL bInstallDVA%
  43.  
  44. DECLARE SUB InstallLivePix
  45. DECLARE SUB InstallWinG
  46. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  47. DECLARE FUNCTION GetRealWindowsSysDir AS STRING
  48. DECLARE SUB UpdateWinG32 (szOrig$) 
  49.  
  50. DECLARE FUNCTION OnWin3x LIB "setuphlp.DLL" AS INTEGER
  51. DECLARE FUNCTION VflatdPresent LIB "setuphlp.DLL" AS INTEGER
  52. DECLARE FUNCTION GetRealSystemDir LIB "setuphlp.DLL" (szDir$,cbBuf%) AS INTEGER
  53. DECLARE FUNCTION RestartWindows LIB "setuphlp.DLL" AS INTEGER
  54. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.DLL" (szOrig$,szNew$) AS INTEGER
  55. DECLARE SUB RenameFilePlease LIB "setuphlp.DLL" (szOrig$,szNew$) 
  56.  
  57. INIT:
  58.     bInstallDVA% = 0
  59.     CUIDLL$ = "mscuistf.dll"            '' Custom user interface dll
  60.     HELPPROC$ = "FHelpDlgProc"          '' Help dialog procedure
  61.     szOldVer$ ="1.00.000     "          '' Reserve space in string for version
  62.  
  63.     ON ERROR GOTO ERRNORMAL
  64.  
  65.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  66.  
  67.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  68.     IF szInf$ = "" THEN
  69.     szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.inf"
  70.     END IF
  71.     ReadInfFile szInf$
  72.  
  73.     SetBitmap CUIDLL$, LOGO
  74.     SetTitle "Programa de Configuraτπo do Meu Castelo de Fantasia"
  75.  
  76. '$IFDEF DEBUG
  77.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  78.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  79.     IF IsDriveValid(WinDrive$) = 0 THEN
  80.     i% = DoMsgBox("O drive do Windows ('"+WinDrive$+"') nπo Θ um drive vßlido.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  81.     GOTO QUIT
  82.     END IF
  83. '$ENDIF ''DEBUG
  84.  
  85.     EXTRACOSTS$ = "ExtraCosts"
  86.     APPCOSTS$ = "AppCosts"
  87.     FOR i% = 1 TO 26 STEP 1
  88.         AddListItem EXTRACOSTS$, "0"
  89.     NEXT i%
  90.  
  91. WELCOME:
  92.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", HELPWELCOME, HELPPROC$)
  93.     IF sz$ = "CONTINUE" THEN
  94.     UIPop 1
  95.     ELSE
  96.     GOSUB ASKQUIT
  97.     GOTO WELCOME
  98.     END IF
  99.  
  100. GETFREEPATH:
  101.     DESTLP$ = "C:\MCF\"
  102.     SetSymbolValue "EditTextIn", DESTLP$
  103.     SetSymbolValue "EditFocus", "END"
  104.  
  105. GETFREEPATHL1:
  106.     sz$ = UIStartDlg(CUIDLL$, FREECELLPATH, "FEditDlgProc", HELPFREECELL, HELPPROC$)
  107.  
  108.     IF sz$ = "CONTINUE" THEN
  109.     DESTLP$ = GetSymbolValue("EditTextOut")
  110.  
  111.     IF MID$(DESTLP$, LEN(DESTLP$), 1) <> "\" THEN
  112.         DESTLP$ = DESTLP$ + "\"
  113.     END IF
  114.     ''Validate new path.
  115.     IF IsDirWritable(DESTLP$) = 0 THEN
  116.         GOSUB BADPATH
  117.         GOTO GETFREEPATHL1
  118.     END IF
  119.     UIPop 1
  120.  
  121.     GOTO COPYLIVEPIX
  122.     ELSEIF sz$ = "REACTIVATE" THEN
  123.     GOTO GETFREEPATHL1
  124.     ELSEIF sz$ = "EXIT" THEN
  125.     GOSUB ASKQUIT
  126.     GOTO GETFREEPATHL1
  127.     END IF
  128.  
  129. COPYLIVEPIX:
  130.     InstallWinG
  131.     InstallLivePix
  132.  
  133. '' check if there is enough free space to install MMBC
  134.     ndrive% = ASC(ucase$(DESTWING$)) - ASC("A") + 1
  135.     ReplaceListItem EXTRACOSTS$, ndrive%, "1024"
  136.     needspace& = GetCopyListCost(EXTRACOSTS$, APPCOSTS$, "")
  137.     IF needspace& > 0 THEN
  138.         ClearCopyList
  139.         GOSUB BADSPACE
  140.         GOTO GETFREEPATH
  141.     END IF
  142.     CopyFilesInCopyList
  143.     UpdateWinG32 GetRealWindowsSysDir()
  144.     GOSUB ADDGROUP
  145.  
  146.  
  147. QUIT:
  148.     ON ERROR GOTO ERRQUIT
  149.  
  150.     IF ERR = 0 THEN
  151.     dlg% = EXITSUCCESS
  152.     ELSEIF ERR = STFQUIT THEN
  153.     dlg% = EXITQUIT
  154.     ELSE
  155.     dlg% = EXITFAILURE
  156.     END IF
  157.  
  158. QUITL1:
  159.     if dlg% = EXITSUCCESS AND bInstallDVA% = 1 then
  160.     sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfoDlgProc", HELPFREECELL, HELPPROC$)
  161.     UIPop 1
  162.     IF sz$ = "CONTINUE" THEN
  163.         rc% = RestartWindows
  164.     ENDIF
  165.     endif
  166.  
  167.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  168.     IF sz$ = "REACTIVATE" THEN
  169.     GOTO QUITL1
  170.     END IF
  171.     UIPop 1
  172.     
  173.  
  174.     END
  175.  
  176. ERRQUIT:
  177.     i% = DoMsgBox("As fontes de Configuraτπo foram danificada!", "Mensagem de Configuraτπo", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  178.     END
  179.  
  180. ERRNORMAL:
  181.     '' Check if user cancelled setup
  182.     IF ERR = STFQUIT THEN
  183.     GOTO QUIT
  184.     END IF
  185.     RESUME NEXT
  186.  
  187. BADPATH:
  188.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  189.     IF sz$ = "REACTIVATE" THEN
  190.     GOTO BADPATH
  191.     END IF
  192.     UIPop 1
  193.     RETURN
  194.  
  195. BADSPACE:
  196.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  197.     IF sz$ = "REACTIVATE" THEN
  198.         GOTO BADSPACE
  199.     END IF
  200.     UIPop 1
  201.     RETURN
  202.  
  203. ASKQUIT:
  204.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  205.  
  206.     IF sz$ = "EXIT" THEN
  207.     UIPopAll
  208.     ERROR STFQUIT
  209.     ELSEIF sz$ = "REACTIVATE" THEN
  210.     GOTO ASKQUIT
  211.     ELSE
  212.     UIPop 1
  213.     END IF
  214.     RETURN
  215.  
  216. ADDGROUP:
  217.     CreateProgmanGroup "Meu Castelo de Fantasia", "", cmoNone
  218.     ShowProgmanGroup  "Meu Castelo de Fantasia", 1, cmoNone
  219.     CreateProgmanItem "Meu Castelo de Fantasia", "Meu Castelo de Fantasia", MakePath(DESTLP$,"mcf.exe"), "", cmoOverwrite
  220.     RETURN
  221.  
  222. SUB InstallWinG STATIC
  223.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  224.     DESTWING$ = GetWindowsSysDir
  225.     AddSectionFilesToCopyList "wing", SrcDir$+"WING", DESTWING$
  226.  
  227.     ' only use DVA on Windows 3.x
  228.     '
  229.     IF OnWin3x() = 1 THEN
  230.     AddSectionFilesToCopyList "dva", SrcDir$+"WING", DESTWING$
  231.         IF VflatdPresent() = 0 THEN
  232.         CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite
  233.         bInstallDVA% = 1
  234.         END IF
  235.     END IF
  236.     DESTWING$ = GetRealWindowsSysDir
  237.     
  238.     AddSectionFilesToCopyList "wing32", SrcDir$+"WING", DESTWING$
  239.     Dest1$ = MakePath(DESTWING$,"wing32.dll")
  240.     Dest2$ = MakePath(DESTWING$,"wing32.xxx")
  241.     RenameFilePlease Dest1$,Dest2$
  242.  
  243. END SUB
  244. '**
  245. '** Purpose:
  246. '**     Builds the copy list and performs all installation operations.
  247. '** Arguments:
  248. '**     none.
  249. '** Returns:
  250. '**     none.
  251. '*************************************************************************
  252. SUB InstallLivePix STATIC
  253.  
  254.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  255.     CreateDir DESTLP$, cmoNone
  256.     CreateDir DESTLP$+"SAVE", cmoNone
  257.  
  258.     CreateIniKeyValue GetWindowsDir+"MCF.INI", "Dirs", "BMPS", SrcDir$, cmoOverwrite
  259.     CreateIniKeyValue GetWindowsDir+"MCF.INI", "Dirs", "MIDI", SrcDir$+"MIDI", cmoOverwrite
  260.     CreateIniKeyValue GetWindowsDir+"MCF.INI", "Dirs", "SAVE", DESTLP$+"SAVE", cmoOverwrite
  261.     AddSectionFilesToCopyList "Files", SrcDir$, DESTLP$
  262.     AddSectionFilesToCopyList "RemBMPFiles", SrcDir$, DESTLP$
  263.     AddSectionFilesToCopyList "RemMIDIFiles", SrcDir$+"MIDI", DESTLP$+"MIDI"
  264. END SUB
  265.  
  266.  
  267. '**
  268. '** Purpose:
  269. '**     Appends a file name to the end of a directory path,
  270. '**     inserting a backslash character as needed.
  271. '** Arguments:
  272. '**     szDir$  - full directory path (with optional ending "\")
  273. '**     szFile$ - filename to append to directory
  274. '** Returns:
  275. '**     Resulting fully qualified path name.
  276. '*************************************************************************
  277. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  278.     IF szDir$ = "" THEN
  279.     MakePath = szFile$
  280.     ELSEIF szFile$ = "" THEN
  281.     MakePath = szDir$
  282.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  283.     MakePath = szDir$ + szFile$
  284.     ELSE
  285.     MakePath = szDir$ + "\" + szFile$
  286.     END IF
  287. END FUNCTION
  288.  
  289.  
  290. FUNCTION GetRealWindowsSysDir STATIC AS STRING
  291.     szBuf$ = string$(260, 32)
  292.     cbBuf% = GetRealSystemDir(szBuf$, 260)
  293.     IF cbBuf% = 0 THEN
  294.     ERROR STFERR
  295.     ELSE
  296.     IF cbBuf% > 259 THEN
  297.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  298.         ERROR STFERR
  299.     END IF
  300.     szBuf$ = RTRIM$(szBuf$)
  301.     IF MID$(szBuf$, 1, 1) = "\" THEN
  302.         szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  303.     ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  304.         szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  305.     END IF
  306.     IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  307.         szBuf$ = szBuf$ + "\"
  308.     END IF
  309.     GetRealWindowsSysDir = szBuf$
  310.     END IF
  311.  
  312.     szBuf$ = ""
  313. END FUNCTION
  314.  
  315. SUB UpdateWinG32 (szOrig$) STATIC 
  316.     '
  317.     ' Here we check the version ourselves of wing32.dll, since 
  318.     ' we can't get version checking for Win32 apps from Win16
  319.     '
  320.     FileNew$ = MakePath(szOrig$, "wing32.dll")
  321.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  322.     IF IsWin32FileNewer( FileOrig$, FileNew$ ) THEN
  323.     RemoveFile FileOrig$, cmoForce
  324.     ELSE
  325.     RemoveFile FileNew$, cmoForce           ' get rid of new file
  326.     RenameFilePlease FileOrig$,FileNew$     ' put back old file
  327.     END IF
  328. END SUB
  329.  
  330.